package info.mineshafter; import info.mineshafter.hacks.URLHandlerFactory; import java.lang.reflect.Method; import java.net.URL; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; public class GameStarter { public static void main(String[] args) { String className = args[0]; System.out.println("GameStarter running! " + className); // Activate the hooks URL.setURLStreamHandlerFactory(new URLHandlerFactory()); bypassTls(); String[] passedArgs = new String[args.length - 1]; for (int i = 1; i < args.length; i++) { passedArgs[i - 1] = args[i]; } try { Class<?> game = Class.forName(className); Method main = game.getMethod("main", String[].class); main.invoke(null, (Object) passedArgs); } catch (Exception e) { System.out.println("Error while starting game:"); e.printStackTrace(); } } private static void bypassTls() { TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {} public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {} } }; SSLContext sc; try { sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (KeyManagementException e) { e.printStackTrace(); } } }